/*
    一维差分与等差数列差分

    前置知识 : 无，知道什么是数组就行

    一维差分：太简单了，没有理解难度。不支持边操作、边查询。

    等差数列差分问题描述：
    一开始1~n范围上的数字都是0。接下来一共有m个操作。
    每次操作：l~r范围上依次加上首项s、末项e、公差d的数列
    最终1~n范围上的每个数字都要正确得到

    等差数列差分的过程：
    每个操作调用set方法
    所有操作完成后在arr上生成两遍前缀和，即调用build方法
    arr里就是最终1~n范围上的每个数字

    void set(int l, int r, int s, int e, int d) 
    {
		arr[l] += s;
		arr[l + 1] += d - s;
		arr[r + 1] -= d + e;
		arr[r + 2] += e;
	}

    void build() 
    {
        for (int i = 1; i <= n; i++) 
        {
            arr[i] += arr[i - 1];
        }
        for (int i = 1; i <= n; i++) 
        {
            arr[i] += arr[i - 1];
        }
	}

    注意：
    等差数列差分在大厂笔试、面试中还不常见，是比赛必备技巧，但预计会流行
    二维差分会在后续的【必备】课程里进一步讲述，支持边操作、边查询的结构会在【扩展】课程讲述

    ================================================

    题目1
    航班预订统计
    这里有 n 个航班，它们分别从 1 到 n 进行编号。
    有一份航班预订表 bookings ，
    表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi]
    意味着在从 firsti 到 lasti 
    包含 firsti 和 lasti ）的 每个航班 上预订了 seatsi 个座位。
    请你返回一个长度为 n 的数组 answer，里面的元素是每个航班预定的座位总数。

    ================================================

    题目2
    等差数列差分模版
    一开始1~n范围上的数字都是0，一共有m个操作，每次操作为(l,r,s,e,d)
    表示在l~r范围上依次加上首项为s、末项为e、公差为d的数列
    M个操作做完之后，统计1~n范围上所有数字的最大值和异或和
    1 <= n <= 10^7
    1 <= m <= 3 * 10^5
    1 <= l <= r <= n

    ================================================

    题目3
    等差数列差分经典题目
    一群人落水后求每个位置的水位高度
    问题描述比较复杂，见测试链接
    测试链接 : https://www.luogu.com.cn/problem/P5026

    注意：这道题OFFSET的设计，可以避免大量的边界讨论

*/